package Control;

import Daos.*;
import Daos.exceptions.PreexistingEntityException;
import Clases.Estacion;
import Clases.Usuario;
import Clases.Ruta;
import java.io.Serializable;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.PersistenceUnit;
import java.util.ArrayList;
import java.util.List;

public class EstacionController {
    
    EstacionJpaController daoEstacion;

    public EstacionController(EntityManagerFactory factory) {
        daoEstacion = new EstacionJpaController(factory);
    }

    public String crear(String cod, String nom, String dir, String resp, String ruta) throws PreexistingEntityException {
        Estacion p = new Estacion();
        Usuario u = new Usuario();
        Ruta r = new Ruta();
        p.setCodEstacion(cod);
        p.setNombreEstacion(nom);
        p.setDireccion(dir);
        u.setCodUser(resp);
        p.setResponsable(u);
        r.setCodRuta(ruta);
        p.setCodRuta(r);
        try {
            daoEstacion.create(p);
            return "El registro fue creado exitosamente";
        } catch (Exception ex) {
            Logger.getLogger(Estacion.class.getName()).log(Level.SEVERE, null, ex);
            return "Error";
        }
    }

    public String editar(String cod, String nom, String dir, String resp, String ruta) throws PreexistingEntityException {
        Estacion p = new Estacion();
        Usuario u = new Usuario();
        Ruta r = new Ruta();
        p.setCodEstacion(cod);
        p.setNombreEstacion(nom);
        p.setDireccion(dir);
        u.setCodUser(resp);
        p.setResponsable(u);
        r.setCodRuta(ruta);
        p.setCodRuta(r);
        try {
            daoEstacion.edit(p);
            return "El registro fue modificado exitosamente";
        } catch (Exception ex) {
            Logger.getLogger(Estacion.class.getName()).log(Level.SEVERE, null, ex);
            return "Error";
        }
    }

    public String borrar(String id) throws PreexistingEntityException {
        Estacion p = new Estacion();
        try {
            daoEstacion.destroy(id);
            return "El registro fue eliminado exitosamente";
        } catch (Exception ex) {
            Logger.getLogger(Estacion.class.getName()).log(Level.SEVERE, null, ex);
            return "Error";
        }
    }

    public Estacion buscar(String id) {
        return daoEstacion.findEstacion(id);
    }
}
